<?php
/** .-------------------------------------------------------------------
 * |  Software: [HDPHP framework]
 * |      Site: www.hdphp.com  www.hdcms.com
 * |-------------------------------------------------------------------
 * |    Author: 向军 <2300071698@qq.com>
 * |    WeChat: aihoudun
 * | Copyright (c) 2012-2019, www.houdunwang.com. All Rights Reserved.
 * '-------------------------------------------------------------------*/

namespace app\home\controller;

use houdunwang\request\Request;
use system\model\Module;

class Entry
{
    public function index()
    {
       $res=$this->runModule();
//        echo '<pre>';
//        var_dump($res);
//        运行模块之后组织下面运行
        if($res!==false){
            return $res;
        }
        return View::with('framework', 'HDPHP')->make();
    }


    protected function runModule()
    {
//        从地址栏获取转化为实例化类的形式
        //http://cms.ishilf.com/index.php?m=pic&action=controller/index/index
        //最终执行：(new \addons\pic\controller\Index())->add();
        $m = Request::get('m');
//        p($m);pic
//        如果没有这个模块不需要加载
        $module=Module::where('module_name',$m)->first();
        $action = Request::get('action');
//        p($action);controller/index/index
//        如果2个参数同时存在表示访问模块
        if ($module&& $m && $action) {
//            将action转为数组
            $info = explode('/', $action);

//            Array
//            (
//                [0] => controller
//                [1] => index
//                [2] => index
//            )
//            拼接转化为实例化类
//           $class='\addons\\'.$m.'\\'.$info[0].'\\'.ucfirst($info[1]);
//            如果是系统模块需要去module里面实例化
            $class = ( $module[ 'module_is_system' ] == 1 ? 'module' : 'addons' ) . "\\" . $m . '\\' . $info[ 0 ] . '\\' . ucfirst( $info[ 1 ] );
//p($class);

            //call_user_func_array面向对象ppt

            return call_user_func_array([new $class,$info[2]],[]);
//            return call_user_func_array( [ new $class , $info[ 2 ] ] , [] );

        }
        return false;


    }
}